package net.lab1024.sa.admin.module.business.wms.stock.domain.form;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * 库存预警规则表 新建表单
 *
 * @Author ADog
 * @Date 2025-09-20 16:13:18
 * @Copyright 1.0
 */

@Data
public class StockWarnRuleAddForm {

    @Schema(description = "规则ID（主键）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "规则ID（主键） 不能为空")
    private Long ruleId;

    @Schema(description = "物料ID（关联t_core_material表，指定该规则适用的物料）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "物料ID（关联t_core_material表，指定该规则适用的物料） 不能为空")
    private Long materialId;

    @Schema(description = "预警类型：1=低库存预警，2=临期预警，3=过期预警，4=高库存预警", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预警类型：1=低库存预警，2=临期预警，3=过期预警，4=高库存预警 不能为空")
    private Integer warnType;

    @Schema(description = "预警阈值（根据预警类型动态定义）：", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "预警阈值（根据预警类型动态定义）：")
    private String warnThreshold;

    @Schema(description = "规则是否启用：0=禁用（暂不生效），1=启用（参与预警判断）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "规则是否启用：0=禁用（暂不生效），1=启用（参与预警判断） 不能为空")
    private Integer isEnabled;

    @Schema(description = "规则创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "规则创建时间 不能为空")
    private LocalDateTime createTime;

    @Schema(description = "规则更新时间（修改时自动更新）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "规则更新时间（修改时自动更新） 不能为空")
    private LocalDateTime updateTime;

    @Schema(description = "规则备注（如“2024年Q4调整：高筋面粉低库存阈值从80kg改为100kg”）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "规则备注（如“2024年Q4调整：高筋面粉低库存阈值从80kg改为100kg”） 不能为空")
    private String remark;

}